﻿using FaceService.Domain.Reponses;

namespace FaceService.Domain.Interface;

public interface IFIService
{
    /// <summary>
    /// 根据Id获取人脸信息
    /// </summary>
    /// <param name="faceId">人脸ID</param>
    /// <returns>人脸信息</returns>
    public Task<FaceInfoReponse?> GetByIdAsync(Guid faceId);

    /// <summary>
    /// 获取全部人脸信息
    /// </summary>
    /// <returns>全部人脸信息</returns>
    public Task<List<FaceInfoReponse>?> GetAllAsync(string search, int pageNo, int pageSize);
    
    /// <summary>
    /// 获取全部人脸信息数量
    /// </summary>
    /// <returns>全部人脸信息</returns>
    public Task<long> GetAllTotalAsync(string search);

    /// <summary>
    /// 创建人脸
    /// </summary>
    /// <param name="name">姓名</param>
    /// <param name="image">人像</param>
    /// <param name="studentId">学号</param>
    /// <returns></returns>
    public Task<FaceInfoReponse?> CreatedAsync(string name, string image, string studentId);

    /// <summary>
    /// 删除指定用户
    /// </summary>
    /// <param name="id">用户</param>
    public Task<Guid?> DeletedByIdAsync(Guid id);

    /// <summary>
    /// 更新人脸
    /// </summary>
    /// <param name="id">人脸ID</param>
    /// <param name="name">姓名</param>
    /// <param name="image">人像</param>
    /// <param name="studentId">学号</param>
    /// <returns></returns>
    public Task<FaceInfoReponse?> UpdatedAsync(Guid id, string? name, string? image, string? studentId);

    /// <summary>
    /// 查找相似人脸
    /// </summary>
    /// <param name="searchFaceUrl"></param>
    /// <returns></returns>
    public Task<List<SearchFaceReponse>> SearchFaceAsync(string searchFaceUrl);
}